1. Field of the Invention
Embodiments of the present invention relates generally to display technologies and more specifically to a method and system for reordering isochronous hub streams.
2. Description of the Related Art
Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Multi-head display systems, which support multiple display devices such as monitors, televisions, and projectors, are becoming increasingly popular. Each display device in such a display system is an output isochronous function and imposes strict timing constraints for receiving display data from the memory subsystem of the display system. To satisfy such timing constraints, one approach is to include an isochronous hub to manage the multiple streams of traffic traveling in between the multi-heads and the memory subsystem. This isochronous hub is disclosed in the U.S. patent application titled, “Isochronous Hub Contracts,” filed on Apr. 2, 2007 and having U.S. patent application Ser. No. 11/695,557 (the “Related Application”).
FIG. 1A is a simplified diagram of a multi-head display system 100 utilizing such an isochronous hub. In particular, the multi-head display system 100 includes a display device 110 supporting two display heads and a memory subsystem 102. The memory subsystem 102 further includes a frame buffer 104 with multiple partitions (e.g., PA0-PAN) and an isochronous hub 106. The isochronous hub 106 ensures the establishment of a contract for an entire frame of data between the display device 110 and the memory subsystem 102 before the memory subsystem 102 delivers any of the requested data. The “contract” here refers to a collection of parameters associated with the request for the frame of data. With the established contract, the isochronous hub 106 proceeds to facilitate the transmission of N streams of requests to the frame buffer 104 to retrieve data from different partitions for each of the two display heads.
In addition, the isochronous hub 106 supports multiple channels carrying different types of data to the two heads of the display device 110. Specifically, a channel 108 of the isochronous hub 106 carries contract-related communication data for establishing, amending, and managing the contracts between the memory subsystem 102 and the display device 110. A first set of channels, channels 120, 122, and 124, and a second set of channels, channels 126, 128, and 130, transmit information associated with different types of display data received from the frame buffer 104 to head 0 and head 1, respectively. FIG. 1B is a conceptual diagram of a display screen including three different types of display data, namely, base data 150, overlay data 152, and cursor data 154. The base address (e.g., ADDR), the screen coordinates (e.g., the Xs and Ys), and the base address offsets (e.g., the X_BASE_OFFs and Y_BASE_OFFs) associated with the three display data types also correspond to physical locations of various buffers in the frame buffer 104 as shown in FIG. 1C, namely a base buffer 160, a overlay buffer 162, and a cursor buffer 164. It is worth noting that each of these buffers corresponds to one or more frame buffer partitions. For example, the base buffer 160 may correspond to PA0-PA3, and the cursor buffer 164 may correspond to PAN. Because each of these partitions operates independently from one another, the isochronous hub 106 lacks any mechanism to ensure the sequence of data received from the partitions matches the sequence of the requests it sends to the frame buffer 104.
To illustrate, suppose the isochronous hub 106 receives a stream of requests for base data from the base buffer 160, a request stream0. In response, the isochronous hub 106 first transmits a request associated with the request stream0 to PAA, denoted as request (PAA), and then transmits a request associated with the request stream0 to PAB, denoted as request (PAB), to the frame buffer 104. Without any corrective mechanism, the isochronous hub 106 is likely to improperly receive the requested data corresponding to the request (PAB) before the requested data corresponding to the request (PAA).
As the foregoing illustrates, what is needed in the art is a method and system for ensuring the sequence of data from the frame buffer partitions match the sequence of requests issued to the frame buffer partitions.